<?php namespace Common\Model;
use Hdphp\Model\Model;
/**
 * 品牌表
 */
Class Brand extends Model{
	protected $table = 'brand';
	/**
	 * [$validate 自动验证，各种标题、作者等是否为必填]
	 * @var array
	 */
	protected $validate = array( 
    	array('bname','required','品牌名称不能为空',3,3),
    	array('ishot','required','是否热门选项不能为空',3,3),
	);
	/**
	 * [$auto 自动完成]
	 * [自动完成是需要条件的：][只有在create()、save()执行的时候才能被触发]
	 * @var array
	 */
	protected $auto=array(   
		//表单字段名,处理方法,方法类型,验证条件,处理时间) 
        array('logo','getLogo','method',3,3)//方法处返出了，这儿可以被接收到
    );

	/**
	 * [getThumb 缩略图的获取方法]
	 * [这儿返出的时候，上面的自动完成能触发，这样就可以自动完成缩略图的上传]
	 * @return [type] [description]
	 */
    public function getLogo(){
    	// 这一步是在编辑的时候才用到的，在添加缩略图的时候是不走这一小步.
    	if($logo = Q('post.logo')){ 
    		// echo "111";
    		// p($logo);die;
    		//这儿是做判断用的，若这儿成立，则直接返回$logo,那是因为编辑页面没有进行缩略图的编辑
    		//没有编辑缩略图打印出的post结果如下
   			//Array
			// (
			//     [bname] => 111
			//     [logo] => ./Upload/Logo/160727/16211469608597_thumb.jpg
			//     [bsort] => 100
			//     [ishot] => 1
			//     [bid] => 5
			// )
			// 
			// 编辑缩略图后打印出post的结果如下
			// Array
			// (
			//     [bname] => 111
			//     [bsort] => 100
			//     [ishot] => 1
			//     [bid] => 5
			// )这就是为什么会用$logo = Q('post.logo')来做判断了，若没有修改的话就可以直接提交上去，若有修改的话，他会触发logo自动完成缩略图的上传过程。
    		return $logo;
    	}
    	// p($_FILES);
    	//如果没有图片上传，则提醒
		if($_FILES['logo']['error']==4){
			$this->error = '缩略图必须上传';
			return;
		}
    	// 上传
    	$files = Upload::path('./Upload/Logo/'. date('ymd'))->type('jpg,jpeg,png,gif')->make();
    	// p($files);
  //   	Array
		// (
		//     [0] => Array
		//         (
		//             [path] => ./Upload/Logo/160727/64971469606498.jpg
		//             [url] => http://127.0.0.1/photo/shop/./Upload/Logo/160727/64971469606498.jpg
		//             [uptime] => 1469606498
		//             [fieldname] => logo
		//             [basename] => 64971469606498.jpg
		//             [filename] => 64971469606498
		//             [name] => QQ图片20160706173936
		//             [size] => 168265
		//             [ext] => jpg
		//             [dir] => ./Upload/Logo/160727
		//             [image] => 1
		//         )
		// )
		// 图片不存在的情况下，需要将错误压入到错误提示数组中，让外面的能接受到需要的错误信息
		if(!$files){
			$this->error = Upload::getError();
			return;
		}
		//缩略
		// $file============================== 图片
		// $outFile=========================== 缩略图文件
		// $thumbWidth======================== 缩略宽度
		// $thumbHeight======================= 缩略高度
		// $thunbType ======================== 缩略方式：
		// Image::thumb($file, $outFile, $thumbWidth, $thumbHeight, $thunbType);
		// 由上得出需要处理的事项：
		// 1、图片：$file
		$path = $files[0]['path'];
		// p($path);./Upload/Logo/160727/84861469607456.jpg
		// 2、缩略图文件：$outFile ===>./Upload/Logo/160727/84861469607456_thumb.jpg
		$type = strrchr($path,'.');
		// p($type);===>.jpg
		// 拼接(替换)：160727/84861469607456_thumb.jpg
		$newPath = str_replace($type,'_thumb'.$type,$path); //将.jpg替换成_thumb.jpg，在路径$path中.
		// p($newPath);./Upload/Logo/160727/23541469607836_thumb.jpg
		// 3、组合缩略
		Image::thumb($path, $newPath, 100, 50, 6);
		return $newPath;
    }
    /**
     * [add 添加方法]
     * [这儿触发自动完成方法][自动完成图片的上传方法]
     */
    public function addBrand(){
    	if(!$this->create()){   //触发条件为create()、save()。去触发自动完成方法。
    		return false;
    	}
    	if($this->error){   //这儿是触发自动验证错误的问题，若错误存在，则直接返回假就行。
    		// echo "111";
    		// die;
    		return false;
    	}
    	$this->add();
    	return true;
    }
    /**
     * [edit 品牌列表的修改]
     * [修改的时候，特别注意图片触发的条件，及触发是否为3，修改的触发。上面最上面的判断条件]
     * [array('logo','getLogo','method',3,3)]
     * @return [type] [description]
     */
    public function edit(){  //修改处千万要记得在页面上添加隐藏域才能进行修改
    	//修改'品牌名称'、'排序'、'热门'
    	//缩略图的修改在自动完成那儿进行搞定，这儿只是进行的触发行为，这儿采用save进行触发
    	if(!$this->create()){   //这一步是为了验证表单是否修改用的
    		return false;
    	}
    	// p(Q('post.'));
    	// 这一步是为了验证缩略图错误的
    	if($this->error){
    		return false;
    	}
    	// 上面的都走完的话，就可以走下面的步骤了
    	// p($this->data);die;	
    	$this->save();
    	// echo "1111";
    	// die;
    	return true;
    }
}

?>